package com.mallcai.bigdata.ladon.client.service;

import com.mallcai.bigdata.ladon.client.export.ExportResultVO;
import com.mallcai.bigdata.ladon.client.export.ExportStrategy;

import java.util.Map;

/**
 * described :
 *
 * @author CaKeDou
 * @date 2019-10-28 11:18
 * Modify:
 */
public interface IExportService {

    /**
     * 创建报表异步导出任务
     *
     * @param appName    调用应用名称
     * @param reportCode 报表编码
     * @param param      查询参数
     * @return 任务id
     */
    Long createTask(String appName, String reportCode, Map<String, Object> param);

    /**
     * 根据taskId获取下载地址
     *
     * @param taskId 任务编号
     * @return 下载地址
     */
    String getDownLoadUrl(Long taskId);

    /**
     * 用户自定义下载
     *
     * @param fileName       生成文件名称
     * @param oriData        原始数据
     * @param exportStrategy 导出策略
     * @return 采用同步方式返回下载地址，异步方式返回任务id
     */
    <T> ExportResultVO consumerExport(String fileName, T oriData, ExportStrategy exportStrategy);
}
